SQL-এ Scalar Functions এবং Aggregate Functions দুটি আলাদা ধরনের ফাংশন যা ডেটাবেসের উপর নির্দিষ্ট ধরনের অপারেশন বা গণনা সম্পাদন করে। এই ফাংশনগুলি SQL কুয়েরি লেখার সময় ব্যবহারকারীর চাহিদা অনুযায়ী ডেটার ওপর বিভিন্ন ধরণের গণনা এবং ফিল্টারিং কার্যক্রম সম্পাদন করতে সাহায্য করে।
1. Scalar Functions
Scalar Functions হল সেই ধরনের ফাংশন যেগুলি একক মান (single value) রিটার্ন করে এবং সাধারণত একক কলাম বা রেকর্ডের ওপর কাজ করে। এগুলি মূলত একক রেকর্ড বা একক ভ্যালুর উপর গণনা করার জন্য ব্যবহৃত হয়।
Scalar Functions কাস্টম তৈরি করার জন্য SQL Server (T-SQL) বা MySQL (Stored Functions) তে User Defined Functions (UDF) ব্যবহার করা যেতে পারে।
Scalar Function তৈরি করা (SQL Server)
SQL Server-এ Scalar Function তৈরি করতে নিম্নলিখিত সিনট্যাক্স ব্যবহার করা হয়:
CREATE FUNCTION function_name (parameters)
RETURNS data_type
AS
BEGIN
-- Function Logic
RETURN (expression)
END;
উদাহরণ: ধরা যাক, আমরা একটি scalar function তৈরি করতে চাই যা দুইটি সংখ্যার যোগফল প্রদান করবে:
CREATE FUNCTION AddNumbers (@num1 INT, @num2 INT)
RETURNS INT
AS
BEGIN
RETURN (@num1 + @num2)
END;
এখন, এই ফাংশনটি ব্যবহার করা যেতে পারে:
SELECT dbo.AddNumbers(5, 10);
এটি ১৫ প্রদান করবে।
2. Aggregate Functions
Aggregate Functions হল সেই ধরনের ফাংশন যেগুলি একাধিক রেকর্ডের উপর গণনা বা সাঙ্গন (aggregation) সম্পাদন করে এবং একটি একক মান রিটার্ন করে। এগুলি সাধারণত GROUP BY ক্লজের সাথে ব্যবহৃত হয়, যা ডেটাকে গ্রুপ করে এবং তারপর বিভিন্ন ফাংশন যেমন COUNT(), SUM(), AVG(), MIN(), MAX() ইত্যাদি প্রযোজ্য হয়।
Aggregate Function তৈরি করা (SQL Server)
SQL Server-এ User Defined Aggregate Function (UDAF) তৈরি করা একটু বেশি জটিল হতে পারে, কারণ এটি নির্দিষ্ট ধরণের ডেটা রোলিং বা কমপ্লেক্স অগমেন্টেশন করতে পারে। তবে সাধারণত প্রাথমিক ফাংশনগুলি যেমন SUM(), COUNT(), AVG() ইত্যাদি এক্সটেন্ডেড ফাংশন হিসেবে ব্যবহৃত হয়।
এছাড়া, Stored Procedure বা Triggers ব্যবহার করে complex aggregation নির্ধারণ করা যেতে পারে।
উদাহরণ:
ধরা যাক, আমরা একটি Custom Aggregate Function তৈরি করতে চাই, যেটি একটি কলামে সর্বোচ্চ মূল্য বের করবে:
CREATE FUNCTION MaxPrice (@price1 INT, @price2 INT)
RETURNS INT
AS
BEGIN
IF @price1 > @price2
RETURN @price1
ELSE
RETURN @price2
END;
এখন, আপনি এটি Aggregate ফাংশন হিসেবে ব্যবহার করতে পারেন যখন আপনি গ্রুপ করা ডেটার মধ্যে সর্বোচ্চ মূল্য চান।
SELECT MAX(dbo.MaxPrice(price1, price2)) AS HighestPrice
FROM products;
এটি products টেবিলের মধ্যে price1 এবং price2 কলামের সর্বোচ্চ মূল্য প্রদর্শন করবে।
Scalar এবং Aggregate Functions এর মধ্যে পার্থক্য
- Scalar Functions একক মান রিটার্ন করে (একক রেকর্ড বা একক কলাম) এবং সাধারণত একটি নির্দিষ্ট রেকর্ডের উপরে কাজ করে।
- Aggregate Functions একাধিক রেকর্ডের উপরে কাজ করে এবং একটি একক সারাংশ (summary) বা গাণিতিক ফলাফল (যেমন, গড়, যোগফল, সর্বোচ্চ মান) প্রদান করে।
উপসংহার
- Scalar Functions সাধারণত নির্দিষ্ট রেকর্ডের উপর গণনা করতে ব্যবহৃত হয় এবং এটি সাধারণত একক কলাম বা একটি রেকর্ড নিয়ে কাজ করে।
- Aggregate Functions সাধারণত একাধিক রেকর্ডের উপর গণনা করতে ব্যবহৃত হয় এবং এটি গ্রুপিং বা সারাংশ হিসেবেও কাজ করতে পারে।
SQL তে Scalar এবং Aggregate Functions কাস্টম তৈরি করে বিভিন্ন ধরনের জটিল ডেটা বিশ্লেষণ এবং প্রক্রিয়াকরণের কাজ করা যায়, যা ডেটাবেস অপারেশনকে আরও কার্যকর এবং নমনীয় করে তোলে।
Read more